﻿using System;
using System.IO;
using System.Net;
using System.Data;
using System.Windows;
using System.Collections;
using System.Windows.Data;
using System.Globalization;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Navigation;
using Sinacor.Infra.UI.Controls;
using System.Runtime.Serialization;
using System.Windows.Media.Animation;
using Sinacor.UI.Bovespa.Ordens.Presenter;
using Sinacor.UI.Bovespa.Clientes.Presenter;
using Sinacor.UI.Bovespa.Clientes.View.SmartClient;
using System.Runtime.Serialization.Formatters.Binary;
//using Sinacor.UI.Bovespa.Ordens.View.SmartClient.EnumConverters;
using System.Text.RegularExpressions;
using System.Text;
using System.Drawing;
using Sinacor.Infra.UI.Controls.SmartClient;
using Sinacor.UI.Bovespa.Ordens.Model;
using Sinacor.UI.Bovespa.Ordens.Model.Enum;
using PSE.Framework.UI.Resources;
using Sinacor.UI.Bovespa.Clientes.Model;

namespace Sinacor.UI.Bovespa.Ordens.View.SmartClient
{
    [Serializable]
    public partial class ResumoFinanceiro : SinacorWindow, IResumoFinanceiro
    {
        #region Construtor
        public ResumoFinanceiro()
        {
            InitializeComponent();
            this.Presenter = new ResumoFinanceiroPresenter(this);
            // Inicialize a presenter no construtor
            //this.DataContext = this.Presenter;
            this.datagridDescricao.NewItemType = typeof(IEnumerable);
            this.AfterInitialize += new RoutedEventHandler(ResumoFinanceiro_AfterInitialize);
            this.comboData.SelectionChanged += new SelectionChangedEventHandler(comboData_SelectionChanged);

            //não está funcionando via XAML
            exp5.IsExpanded = false;
        }

        void comboData_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        void navigatorPadrao_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (navigatorPadrao.ItemsSource != null && navigatorPadrao.Items.Count > 0)
            {
                this.Presenter.RegistroAtual = navigatorPadrao.SelectedIndex;
                this.Presenter.NavegarResumoFinanceiro((ModelResumoFinanceiro)navigatorPadrao.SelectedItem, (bool)checkboxAnalitico.IsChecked);
                ConfigurarNavigator();

            }
        }

        private void ConfigurarNavigator()
        {

            navigatorPadrao.IsEnabled = (navigatorPadrao.Items.Count > 0);
        }

        private void ResumoFinanceiro_AfterInitialize(object sender, RoutedEventArgs e)
        {
            this.ModuleId = "ORD";
            this.textApelido.Focus();
            this.ConfigurarEventos();
            this.CarregarValoresIniciais();
            this.HabilitarCamposCliente(false);
        }

        #endregion

        #region Propriedades

        #region Public
        public ResumoFinanceiroPresenter Presenter { get; set; }
        public ModelResumoFinanceiro ResumoFinanceiroModel
        {
            get { return _resumoFinanceiroModel; }
            set { _resumoFinanceiroModel = value; }
        }
        public bool BotaoCalcularVisivel
        {
            get
            {
                return _botaoCalcularVisivel;
            }
            set
            {
                _botaoCalcularVisivel = value;
            }
        }
        public PesquisaCliente PesquisaClienteModel
        {
            get { return _pesquisaClienteModel; }
            set { _pesquisaClienteModel = value; }
        }

        public decimal? DescontoCorretagem
        {
            get { return _descontoCorretagem; }
            set { _descontoCorretagem = value; }
        }
        #endregion

        #region Private
        private bool _botaoCalcularVisivel;
        private ModelResumoFinanceiro _resumoFinanceiroModel;
        private PesquisaCliente _pesquisaClienteModel;
        private decimal? _porcentagemDescontoAplicadoDesfazer;
        private decimal? _valorCorretagemOriginalDesfazer;
        private decimal? _valorLiquidoNotaCorretagemDesfazer;
        private bool _isISSCorretagemReversoDesfazer;
        private decimal? _descontoCorretagem;
        #endregion

        #endregion

        #region Configuracao_Eventos
        private void ConfigurarEventos()
        {
            textDescontoCorretagem.LostFocus += new RoutedEventHandler(textDescontoCorretagem_LostFocus);
            textCorretagemTotal.LostFocus += new RoutedEventHandler(textCorretagemTotal_LostFocus);
            textLiquidodaNota.LostFocus += new RoutedEventHandler(textLiquidodaNota_LostFocus);
            btnPesquisa.Click += new RoutedEventHandler(Search_Click);

        }
        #endregion

        #region Eventos
        private void NewSearch_Click(object sender, RoutedEventArgs e)
        {
            //Ptruiz.gp - 2008.12.16 -  Flag para verificar se a nova pesquisa é chamada na própria tela.
            bool _novaPesquisa = true;
            this.Presenter.ConfigurarNovaPesquisa(_novaPesquisa);
        }


        private void textDescontoCorretagem_LostFocus(object sender, RoutedEventArgs e)
        {
            //20080410 17:15 - Alterado - DMilanez.7Comm
            //this.ResumoFinanceiroModel.PorcentagemDescontoAplicado = !String.IsNullOrEmpty(textDescontoCorretagem.Text) ? Convert.ToDecimal(textDescontoCorretagem.Text) : 0;

            if (textDescontoCorretagem.Value != DescontoCorretagem)
            {
                this.ResumoFinanceiroModel.PorcentagemDescontoAplicado = textDescontoCorretagem.Value;
                this.ResumoFinanceiroModel.IsISSCorretagemReverso = Convert.ToBoolean(checkboxCorretagem.IsChecked);

                this.Presenter.AlterarPercentualCorretagem(ResumoFinanceiroModel);
                base.HideUserWaitingProcess();
            }

            DescontoCorretagem = null;
        }

        private void textCorretagemTotal_LostFocus(object sender, RoutedEventArgs e)
        {
            //20080410 17:15 - Alterado - DMilanez.7Comm
            //this.ResumoFinanceiroModel.ValorCorretagemOriginal = !String.IsNullOrEmpty(textCorretagemTotal.Text) ? Convert.ToDecimal(textCorretagemTotal.Text) : 0;


            this.ClearServiceErrors();
            this.ResumoFinanceiroModel.ValorCorretagemOriginal = textCorretagemTotal.Value;
            this.ResumoFinanceiroModel.IsISSCorretagemReverso = Convert.ToBoolean(checkboxCorretagem.IsChecked);

            this.Presenter.AlterarValorCorretagem(ResumoFinanceiroModel);
            base.HideUserWaitingProcess();
        }

        private void textLiquidodaNota_LostFocus(object sender, RoutedEventArgs e)
        {
            //20080410 17:15 - Alterado - DMilanez.7Comm
            //this.ResumoFinanceiroModel.ValorLiquidoNotaCorretagem = !String.IsNullOrEmpty(textLiquidodaNota.Text) ? Convert.ToDecimal(textLiquidodaNota.Text) : 0;
            this.ResumoFinanceiroModel.ValorLiquidoNotaCorretagem = textLiquidodaNota.Value;
            this.ResumoFinanceiroModel.IsISSCorretagemReverso = Convert.ToBoolean(checkboxCorretagem.IsChecked);

            this.Presenter.AlterarLiquidoNota(ResumoFinanceiroModel);
            base.HideUserWaitingProcess();
        }

        private void Search_Click(object sender, RoutedEventArgs e)
        {
            this.ClearServiceErrors();

            if (textApelido.Validate())
            {
                //Ptruiz.gp - 2008.12.15 - Correção do bug 4729
                this.ConfigurarNovaPesquisa(false);
                this.PesquisarResumoFinanceiro();
                if ((bool)radioCliente.IsChecked)
                {
                    buttonCalcula.Visibility = Visibility.Visible;
                    checkboxCorretagem.Visibility = Visibility.Visible;
                }

                else
                {
                    buttonCalcula.Visibility = Visibility.Hidden;
                    checkboxCorretagem.Visibility = Visibility.Hidden;


                }

            }
        }

        private void buttonPesquisaCliente_Click(object sender, RoutedEventArgs e)
        {
            this.AbrirPesquisaCliente();
        }
        /// <summary>
        /// Handler do evento click do botão que solicita o cálcula financeiro (buttonCalcula).
        /// </summary>
        /// <param name="sender">Objeto que disparou o evento.</param>
        /// <param name="e">Informações adicionais do evento disparado.</param>
        /// <user>asoares</user>
        private void buttonCalcula_Click(object sender, RoutedEventArgs e)
        {
            this.CalcularResumoFinanceiro();
        }

        private void checkboxAnalitico_Checked(object sender, RoutedEventArgs e)
        {
            base.ShowUserWaitingProcess();
            if (_resumoFinanceiroModel != null && _resumoFinanceiroModel.CodigoCliente != null && _resumoFinanceiroModel.CodigoCliente > 0)
            {
                Sinacor.UI.Bovespa.Ordens.Model.Enum.TipoCliente tipoCliente = new TipoCliente();
                if ((bool)radioCliente.IsChecked)
                    tipoCliente = TipoCliente.Cliente;
                if ((bool)radioBroker.IsChecked)
                    tipoCliente = TipoCliente.Broker;

                if ((bool)radioFinanceiro.IsChecked)
                    tipoCliente = TipoCliente.Financeiro;

                this.Presenter.montarFiltroComitente(textApelido.Text, (bool)checkboxSomenteContaSelecionada.IsChecked, Convert.ToDateTime(comboData.SelectedValue), _resumoFinanceiroModel, (bool)checkboxAnalitico.IsChecked, tipoCliente);
            }

            base.HideUserWaitingProcess();
        }

        private void datagridDescricao_ApplyingStyle(object sender, ApplyStyleEventArgs e)
        {

            if (e.ItemInfo.Item != null)
            {
                if (e.OriginalSource is BaseRow)
                {
                    if (((Ordens.Communication.Bovespa.ResumoFinanceiro.ResumoFinanceiro.ComitenteResponse)e.ItemInfo.Item).FatorLiquidacaoNota == 0)
                        e.Style = BaseRow.GridRowBusiness06;
                }

            }

        }

        #endregion

        #region Metodos

        #region Metodos_Privados
        private void PesquisarResumoFinanceiro()
        {
            bool itensRetornados;
            ModelFiltroResumoFinanceiro request = new ModelFiltroResumoFinanceiro();

            request.ApelidoCliente = textApelido.Text;
            request.TipoCliente = RetornarTipoClienteSelecionado();
            request.IsSomenteContaSelecionada = Convert.ToBoolean(checkboxSomenteContaSelecionada.IsChecked);
            request.DataPregao = Convert.ToDateTime(comboData.SelectedValue);
            HabilitarCamposCliente(false);
            base.ShowUserWaitingProcess();


            this.Presenter.Pesquisar(request, checkboxAnalitico.IsChecked == true);
            datagridDescricao.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);

            itensRetornados = (datagridDescricao.Items.Count > 0);
            exp0.IsExpanded = !itensRetornados;
            exp5.IsExpanded = itensRetornados;

            base.HideUserWaitingProcess();

        }

        private TipoCliente? RetornarTipoClienteSelecionado()
        {
            TipoCliente? tipoCliente = null;

            if (this.radioCliente.IsChecked == true)
            {
                tipoCliente = TipoCliente.Cliente;
            }
            else if (this.radioFinanceiro.IsChecked == true)
            {
                tipoCliente = TipoCliente.Financeiro;
            }
            else if (this.radioBroker.IsChecked == true)
            {
                tipoCliente = TipoCliente.Broker;
            }


            return tipoCliente;
        }

        private void CarregarValoresIniciais()
        {

            base.ShowUserWaitingProcess();//20080331 17:24 - Alterado - DMilanez.7Comm
            this._resumoFinanceiroModel = new ModelResumoFinanceiro();
            this.Presenter.CarregarValoresIniciais();
            base.HideUserWaitingProcess();

        }

        private void ConfigurarControles()
        {

            this.HabilitarCamposCliente(false);
            this.BotaoCalcularVisivel = true;


        }

        private void AbrirPesquisaCliente()
        {
            PesquisaClientes pesquisaCliente = new PesquisaClientes();
            //implementar o ultimo parametro codigo cliente, mas é necessario acha-lona tela
            this.PesquisaClienteModel = new PesquisaCliente();
            this.PesquisaClienteModel.Apelido = textApelido.Text;
            pesquisaCliente.CarregaParametros(Sinacor.UI.Bovespa.Clientes.Model.Enum.JanelaChamada.ResumoFinanceiro, this.PesquisaClienteModel);
            pesquisaCliente.Owner = this;
            pesquisaCliente.SetMenuHeader("Bovespa.Clientes.Label.PesquisaClientesMenuHeader");
            pesquisaCliente.ShowDialog();

            if (pesquisaCliente.PesquisaClienteModel.Codigo > 0)
            {
                ResumoFinanceiroModel = new ModelResumoFinanceiro();
                ResumoFinanceiroModel.ApelidoCliente = pesquisaCliente.PesquisaClienteModel.Apelido;
                ResumoFinanceiroModel.NomeCliente = pesquisaCliente.PesquisaClienteModel.NomeCliente;
                ResumoFinanceiroModel.CodigoCliente = pesquisaCliente.PesquisaClienteModel.Codigo;

                textApelido.Text = ResumoFinanceiroModel.ApelidoCliente;
                textNomeCliente.Text = ResumoFinanceiroModel.NomeCliente;

            }

        }

        private void ExibirResumoFinanceiro()
        {


            this.buttonPesquisaCliente.IsEnabled = false;
            textApelido.Text = _resumoFinanceiroModel.ApelidoCliente;
            textNomeCliente.Text = _resumoFinanceiroModel.NomeCliente;

            TipoClienteAtribuir(_resumoFinanceiroModel.TipoCliente);
            checkboxSomenteContaSelecionada.IsChecked = _resumoFinanceiroModel.IsSomenteContaSelecionada;
            checkboxContaInvestimento.IsChecked = (bool?)_resumoFinanceiroModel.IsContaInvestimento;
            // Resumo dos Negócios
            textVendaaVista.Value = _resumoFinanceiroModel.VolumeVendasVista;
            textCompraaVista.Value = _resumoFinanceiroModel.VolumeComprasVista;
            textTermo.Value = _resumoFinanceiroModel.VolumeOperacoesTermo;
            textOpcoesVendas.Value = _resumoFinanceiroModel.VolumeVendasOpcao;
            textOpcoesCompra.Value = _resumoFinanceiroModel.VolumeComprasOpcao;
            textDebentures.Value = _resumoFinanceiroModel.ValorOperacoesDebentures;

            // Resumo dos Negócios - Futuro
            textDiarioF.Value = _resumoFinanceiroModel.ValorAjusteDia;
            textPosicoesF.Value = _resumoFinanceiroModel.ValorAjustePosicao;
            textDayTradeF.Value = _resumoFinanceiroModel.ValorAjusteDayTrade;
            textVendaFuturo.Value = _resumoFinanceiroModel.ValorTotalVendaMercadoFuturo;
            textCompraFuturo.Value = _resumoFinanceiroModel.ValorTotalCompraMercadoFuturo;
            textFuturo.Value = _resumoFinanceiroModel.ValorOperacoesFuturas;
            textTotal1.Value = _resumoFinanceiroModel.VolumeNegocios;


            textDescontoCorretagem.Value = (_resumoFinanceiroModel.PorcentagemDescontoAplicado.HasValue) ? decimal.Round((Decimal)_resumoFinanceiroModel.PorcentagemDescontoAplicado, 8) : 0;

            textDescontoCadastrado.Value = (_resumoFinanceiroModel.PorcentagemDescontoCadastrado.HasValue) ? decimal.Round((Decimal)_resumoFinanceiroModel.PorcentagemDescontoCadastrado, 9) : 0;
            checkboxCorretagem.IsChecked = _resumoFinanceiroModel.IsISSCorretagemReverso;

            if (_resumoFinanceiroModel.ValorCorretagemOriginal.HasValue)
                textCorretagemTotal.Value = _resumoFinanceiroModel.ValorCorretagemOriginal;
            else
                textCorretagemTotal.Value = null;

            if (_resumoFinanceiroModel.ValorLiquidoNotaCorretagem.HasValue)
                textLiquidodaNota.Value = _resumoFinanceiroModel.ValorLiquidoNotaCorretagem;
            else
                textLiquidodaNota.Value = null;

            textLiquidodaNotaPara.Value = _resumoFinanceiroModel.PrazoLiquidacao;

            this._isISSCorretagemReversoDesfazer = _resumoFinanceiroModel.IsISSCorretagemReverso;
            this._porcentagemDescontoAplicadoDesfazer = (_resumoFinanceiroModel.PorcentagemDescontoAplicado.HasValue) ? decimal.Round((Decimal)_resumoFinanceiroModel.PorcentagemDescontoAplicado, 9) : 0;
            this._valorCorretagemOriginalDesfazer = _resumoFinanceiroModel.ValorCorretagemOriginal;
            this._valorLiquidoNotaCorretagemDesfazer = _resumoFinanceiroModel.ValorLiquidoNotaCorretagem;

            // Detalhe Financeiro - Corretagem
            textTotalC.Value = _resumoFinanceiroModel.ValorTotalCorretagem;
            textCorrespondenteC.Value = _resumoFinanceiroModel.ValorRepasseCorrespondente;

            if (_resumoFinanceiroModel.ValorCorretagemOriginal.HasValue)
                textLiquida.Value = _resumoFinanceiroModel.ValorCorretagemOriginal;
            else
                textLiquida.Value = null;

            textAcrescimoC.Value = _resumoFinanceiroModel.ValorDescontoCorretagemCliente;
            textISSC.Value = _resumoFinanceiroModel.ValorISS;
            textIssCC.Text = _resumoFinanceiroModel.IndicadorISS.ToString();
            textIRRFC.Value = _resumoFinanceiroModel.ValorIRCorretagem;
            textIRRFdt.Value = _resumoFinanceiroModel.ValorIRRF;

            // Detalhe Financeiro - Emolumento
            textOperacoesFinaisE1.Value = _resumoFinanceiroModel.ValorEmolumentosOperacoesFinais;
            textCarteiraPropriaE1.Value = _resumoFinanceiroModel.ValorEmolumentosOperacoesCarteiraPropria;
            textDayTradesE.Value = _resumoFinanceiroModel.ValorEmolumentosOperacoesDayTrade;
            textEmolumento.Value = _resumoFinanceiroModel.ValorEmolumentosLiquidacaoBovespa;
            textTxLiquidacao.Value = _resumoFinanceiroModel.ValorEmolumentosLiquidacaoCBLC;

            //Detalhe Financeiro - Tx. de Registro
            textOperacoesFinaisT.Value = _resumoFinanceiroModel.ValorTaxaRegistroOperacoesFinais;
            textCarteiraPropriaT.Value = _resumoFinanceiroModel.ValorTaxaRegistroOperacoesCarteiraPropria;
            textDayTradesT.Value = _resumoFinanceiroModel.ValorTaxaRegistroOperacoesDayTrade;
            textTxRegistroBolsa.Value = _resumoFinanceiroModel.ValorTaxaRegistroBovespa;
            textTxRegistroCBLC.Value = _resumoFinanceiroModel.ValorTaxaRegistroCBLC;

            //Detalhe Financeiro - Taxa
            textPTANT.Value = _resumoFinanceiroModel.ValorTaxaPTAN;
            textIOFT.Value = _resumoFinanceiroModel.ValorTaxaIOF;
            textANAT.Value = _resumoFinanceiroModel.ValorTaxaANA;
            textOutrasDespesasT.Value = _resumoFinanceiroModel.ValorDescontoCorretagem;



        }

        private void TipoClienteAtribuir(TipoCliente? tipoCliente)
        {
            switch (tipoCliente)
            {
                case TipoCliente.Broker:
                    this.radioBroker.IsChecked = true;
                    break;
                case TipoCliente.Financeiro:
                    this.radioFinanceiro.IsChecked = true;
                    break;
                default:
                    this.radioCliente.IsChecked = true;
                    break;
            }
        }

        private bool PermitirCalculoFinanceiro()
        {
            if (this.textApelido.Text.Length == 0)
                return false;

            if (this.comboData.Text.Length == 0)
                return false;

            return true;
        }

        private void CalcularResumoFinanceiro()
        {
            if (this.PermitirCalculoFinanceiro())
            {
                base.ShowUserWaitingProcess();
                this.ResumoFinanceiroModel.DataMovimento = _resumoFinanceiroModel.DataMovimento;
                this.ResumoFinanceiroModel.ApelidoCliente = textApelido.Text;
                this.ResumoFinanceiroModel.TipoCliente = RetornarTipoClienteSelecionado().Value;
                this.ResumoFinanceiroModel.IsSomenteContaSelecionada = Convert.ToBoolean(checkboxSomenteContaSelecionada.IsChecked);
                this.Presenter.CalcularResumoFinanceiro(this.ResumoFinanceiroModel);
                base.HideUserWaitingProcess();
            }
            else
            {
                this.ShowError("Bovespa.ResumoFinanceiro.Message.PermitirCalculoFinanceiroFalha");
            }

        }

        private void ConfigurarCamposPesquisa()
        {

            this.LimparCampos(exp3.Content);
            this.LimparCampos(exp4.Content);
            this.LimparCampos(exp5.Content);

            IEnumerable comitentes = null;
            this.datagridDescricao.ItemsSource = comitentes;

            // this.comboData.SelectedIndex = 0;

            this.HabilitarCamposTela(true, true, true, true);
            this.HabilitarCamposCliente(false);


            this.buttonPesquisaCliente.IsEnabled = true;

            _porcentagemDescontoAplicadoDesfazer = null;
            _valorCorretagemOriginalDesfazer = null;
            _valorLiquidoNotaCorretagemDesfazer = null;

            this.textApelido.Focus();

            //limpar os campos manualmente

            //textNomeCliente.Text = string.Empty;
            //checkboxContaInvestimento.IsChecked = false;
            //checkboxSomenteContaSelecionada.IsChecked = false;
            //checkboxAnalitico.IsChecked = true;
            //radioBroker.IsChecked = false;
            //radioCliente.IsChecked = true;
            //radioFinanceiro.IsChecked = false;
        }

        #endregion

        #region Métodos Públicos

        public void ExibirComitentes(IEnumerable comitentes)
        {
            if (comitentes != null)
                this.datagridDescricao.ItemsSource = comitentes;

        }

        public void ExibirDatas(IEnumerable datas)
        {
            this.comboData.ItemsSource = datas;
            this.comboData.SelectedIndex = 0;
        }

        public void HabilitarCamposCliente(bool estado)
        {
            //verificar 
            this.textDescontoCorretagem.IsEnabled = estado;
            this.textCorretagemTotal.IsEnabled = estado;
            this.textLiquidodaNota.IsEnabled = estado;
            this.checkboxCorretagem.IsEnabled = estado;

        }

        public void ExibirDados(ModelResumoFinanceiro objResumoFinanceiro)
        {
            this._resumoFinanceiroModel = objResumoFinanceiro;

            this.ExibirResumoFinanceiro();
        }

        public void OcultarColunas(bool ocultar)
        {
            if (ocultar)
            {
                this.datagridDescricao.Columns["CodigoNegocio"].Visible = false; // .ShowColumn("CodigoNegocio", false);
                this.datagridDescricao.Columns["PorcentagemReducaoAcrescimoCorretagem"].Visible = false;// ShowColumn("PorcentagemReducaoAcrescimoCorretagem", false);
            }
            else
            {
                this.datagridDescricao.Columns["CodigoNegocio"].Visible = true; // .ShowColumn("CodigoNegocio", false);
                this.datagridDescricao.Columns["PorcentagemReducaoAcrescimoCorretagem"].Visible = true;// ShowColumn("PorcentagemReducaoAcrescimoCorretagem", false);
            }
        }

        public void ConfigurarNovaPesquisa(bool isNovaPesquisa)
        {
            this._resumoFinanceiroModel = new ModelResumoFinanceiro();

            navigatorPadrao.ItemsSource = null;
            navigatorPadrao.IsEnabled = false;

            this.LimparCampos(exp3.Content);
            this.LimparCampos(exp4.Content);
            this.LimparCampos(exp5.Content);

            IEnumerable comitentes = null;
            this.datagridDescricao.ItemsSource = comitentes;

            

            this.HabilitarCamposTela(true, true, true, true);
            this.HabilitarCamposCliente(false);

            this.buttonPesquisaCliente.IsEnabled = true;

            _porcentagemDescontoAplicadoDesfazer = null;
            _valorCorretagemOriginalDesfazer = null;
            _valorLiquidoNotaCorretagemDesfazer = null;

            this.textApelido.Focus();

            //limpar os campos manualmente
            //Ptruiz.gp - 2008.12.15 - Correção do bug 4729
            //textApelido.Text = string.Empty;
            textNomeCliente.Text = string.Empty;
            checkboxContaInvestimento.IsChecked = false;
            checkboxSomenteContaSelecionada.IsChecked = false;
            checkboxAnalitico.IsChecked = true;
            if (isNovaPesquisa)
            {
                radioBroker.IsChecked = false;
                radioCliente.IsChecked = true;
                radioFinanceiro.IsChecked = false;
                textApelido.Text = string.Empty;
                this.comboData.SelectedIndex = 0;
            }
            buttonCalcula.IsEnabled = false;

            exp0.IsExpanded = true;
            exp5.IsExpanded = false;
        }

        public void HabilitarCamposTela(bool estadoApelido, bool estadoDataPregao, bool estadoTela, bool estadoAnalitico)
        {
            this.textApelido.IsEnabled = estadoApelido;
            this.comboData.IsEnabled = estadoDataPregao;
            this.radioCliente.IsEnabled = estadoTela;
            this.radioFinanceiro.IsEnabled = estadoTela;
            this.radioBroker.IsEnabled = estadoTela;
            //this.checkboxSomenteContaSelecionada.IsEnabled = estadoTela;
            // this.checkboxAnalitico.IsEnabled = estadoAnalitico;
        }

        public void HabilitarCalculoFinanceiro()
        {
            if (this.BotaoCalcularVisivel)
            {
                this.buttonCalcula.Visibility = Visibility.Visible;
                buttonCalcula.IsEnabled = true;
                //if (btnContrairResumoF.IsVisible)
                //  this.buttonCalcula1.Visibility = Visibility.Visible;
            }
            else
            {
                this.buttonCalcula.Visibility = Visibility.Collapsed;
                // this.buttonCalcula1.Visibility = Visibility.Collapsed;
                buttonCalcula.IsEnabled = false;
            }
        }

        public void AvisarItemSalvoComSucesso()
        {

            SinacorMessageBox.Show((string)ResourceProviderManager.GetResourceProvider().TryGetResource("Bovespa.ResumoFinanceiro.Message.SalvarSucesso"), SinacorMessageBoxImage.Information);
            //atualizar os dados apresentados na tela
            this.PesquisarResumoFinanceiro();
        }

        public void AvisarNenhumItemParaSalvar()
        {
            SinacorMessageBox.Show((string)ResourceProviderManager.GetResourceProvider().TryGetResource("Bovespa.ResumoFinanceiro.Message.NenhumCampoAlterado"), SinacorMessageBoxImage.Exclamation);
        }

        public void AvisarPesquisaSemRetorno()
        {
            SinacorMessageBox.Show((string)ResourceProviderManager.GetResourceProvider().TryGetResource("Bovespa.ResumoFinanceiro.Message.SemRetorno"), SinacorMessageBoxImage.Information);
            navigatorPadrao.ItemsSource = null;
            ConfigurarCamposPesquisa();
        }

        public void AvisarNenhumResumoFinanceiroInformado()
        {
            SinacorMessageBox.Show((string)ResourceProviderManager.GetResourceProvider().TryGetResource("Bovespa.ResumoFinanceiro.Message.AcaoSemResumoFinanceiro"), SinacorMessageBoxImage.Exclamation);
        }

        public void AvisarAlteracaoNaoPermitidaParaTipoCliente()
        {
            //base.HideUserWaitingProcess();
            //this.ExibirMensagemByResourceKey("MessageBox_RF_AlteracaoNaoPermitida");
        }

        public void AvisarAlteracaoNaoPermitida()
        {
            //base.HideUserWaitingProcess();
            //this.ExibirMensagemByResourceKey("MessageBox_RF_PermitirAlterarFalha");
        }

        public void InformarFiltroInvalido(bool apelidoValido, bool dataPregaoValida, bool tipoClienteValido)
        {
            //StringBuilder str = new StringBuilder();
            if (!apelidoValido)
                this.ShowError("Bovespa.ResumoFinanceiro.ExceptionMessage.MessageBox_RF_FiltroPesquisaApelidoInvalido");

            if (!dataPregaoValida)
                this.ShowError("Bovespa.ResumoFinanceiro.ExceptionMessage.MessageBox_RF_FiltroPesquisaDataPregaoInvalida");

            if (!tipoClienteValido)
                this.ShowError("Bovespa.ResumoFinanceiro.ExceptionMessage.MessageBox_RF_FiltroPesquisaTipoClienteInvalido");

            base.HideUserWaitingProcess();

        }

        public bool ConfirmarAlteracaoDados()
        {
            string message = (string)ResourceProviderManager.GetResourceProvider().TryGetResource("Bovespa.ResumoFinanceiro.Message.ConfirmarAlteracaoDados");



            if (SinacorMessageBox.Show(message, SinacorMessageBoxButton.YesNo).CompareTo(SinacorMessageBoxResult.Yes) == 0)
                return true;
            else
                return false;

        }

        public void RestaurarValorCorretagemOriginal(decimal? valor)
        {
            textCorretagemTotal.Text = valor.HasValue ? Convert.ToString(valor.Value) : null;
        }

        public void RestaurarValorLiquidoNota(decimal? valor)
        {
            textLiquidodaNota.Text = valor.HasValue ? Convert.ToString(valor.Value) : null;
        }

        //20080410 10:40 - Alterado - DMilanez.7Comm
        public void RestaurarPorcentagemDescontoAplicado(decimal? valor)
        {
            textDescontoCorretagem.Text = valor.HasValue ? Convert.ToString(valor.Value) : null;
        }

        public void ExibirMensagem(string mensagem)
        {
            SinacorMessageBox.Show(mensagem, SinacorMessageBoxImage.Information);
        }

        public void AvisarErroNaAlteracao()
        {
            base.HideUserWaitingProcess();
            // base.ShowError("MessageBox_RF_SalvarFalha");
            base.ShowError("Bovespa.ResumoFinanceiro.ExceptionMessage.SalvarFalha");
        }

        public void AvisarCalculadoComSucesso()
        {
            base.HideUserWaitingProcess();
            SinacorMessageBox.Show((string)ResourceProviderManager.GetResourceProvider().TryGetResource("Bovespa.ResumoFinanceiro.Message.SucessoCalcularResumoFinanceiro"), SinacorMessageBoxImage.Information);

        }

        public void View_ConfigurarNavigator(IEnumerable resumoFinanceiro)
        {

            navigatorPadrao.ItemsSource = resumoFinanceiro;
            navigatorPadrao.UpdateTarget(SinacorNavigator.ItemsSourceProperty);
        }

        public void ExibirDadosNegocio(Object negocio)
        {
            //  LimparCamposTela(sinacorExpander.Content);
        }

        #endregion

        private void textDescontoCorretagem_GotFocus(object sender, RoutedEventArgs e)
        {
            DescontoCorretagem = textDescontoCorretagem.Value;
        }

        #endregion


    }
}
